perm filename STUFIT.FAI[NEW,LCS] blob sn#561089 filedate 1981-01-31 generic text, type T, neo UTF8
00100		TITLE STUFIT
00200		ENTRY STUFIT, UNSTUF
00300	; THIS PACKS NUMBERS IN BITS AS FOLLOWS:
00400	;   4  /  5  /  3  /  24
00500	; WDCNT/ P1 / P2  / P3
00600	;  THEN UNSTUF UNPACKS THEM.
00700	STUFIT:	0		;CALL STUFIT(VARRAY,N,I)
00800				;N=INPUT PNTR, I=OUTPUT PNTR
00900		MOVEI 1,@(16)	;GET LOC. OF V ARRAY
01000		ADD 1,@1(16)	;ADD TO IT N
01100		MOVE 7,2(1)	;GET P3
01200		FMPR 7,[1000.00]	;*1000.00
01300		KIFIX 7,7	;MAKE IT INTEGER
01400		LSHC 7,-=24	;SHIFT IT INTO AC8
01500		KIFIX 7,1(1)	;GET P2 - STAFF
01600		LSHC 7,-3
01700		KIFIX 7,(1)	;GET P1 - CODE
01800		LSHC 7,-5
01900		KIFIX 7,-1(1)	;GET WD CNT
02000		LSHC 7,-4	;NOW ALL IS STUFFED INTO AC8
02100		MOVEI 1,@(16)	; LOC OF V
02200		ADD 1,@2(16)	; PLUS I
02300		MOVEM 8,(1)	; PUT PACKED INFO BACK INTO V ARRAY
02400		MOVEI 1,4
02500		ADDM 1,@1(16)	;ADD 4 TO N
02600		MOVEI 1,1
02700		ADDM 1,@2(16)	;ADD 1 TO I
02800		JRA 16,3(16)
02900	UNSTUF:	0	;CALL UNSTUF(Q,I,V,N)
03000		MOVEI 1,@(16)	;GET LOC OF INPUT ARRAY
03100		ADD 1,@1(16)	;ADD PNTR I
03200		MOVEI 3,@2(16)	;GET LOC OF R
03300		ADD 3,@3(16)	;ADD PNTR N
03400		MOVE 1,(1)	;GET PACKED WORD
03500		LSHC 1,-=24	;GET P3, SHIFT IT TO AC2
03600		LSH 2,-=12	;SHIFT IT SOME MORE
03700		FLTR 2,2
03800		FDVR 2,[1000.00]
03900		MOVEM 2,2(3)		;PUT INTO R ARRAY
04000		LSHC 1,-3	;GET P2
04100		LSH 2,-=33
04200		FLTR 2,2
04300		MOVEM 2,1(3)
04400		LSHC 1,-5
04500		LSH 2,-=31	;GET P1
04600		FLTR 2,2
04700		MOVEM 2,(3)
04800		LSHC 1,-4	;GET WD CNT
04900		LSH 2,-=32
05000		FLTR 2,2
05100		MOVEM 2,-1(3)	;ALL DONE
05200		MOVEI 1,4
05300		ADDM 1,@3(16)	;ADD 4 TO N
05400		MOVEI 1,1
05500		ADDM 1,@1(16)	;ADD 1 TO I
05600		JRA 16,4(16)
05700		END